unit Cls_NaturezaOper;

interface

uses DbTables, dm, biblio, sysutils;

type
  TNaturezaOper = class(TObject)
  private
    Codf_Codigo: string;
    Nato_Codigo: string;
  public
    Nato_Descricao: string;
    Nato_ContaDb: string;
    Nato_ContaCr: string;
    Nato_CodigoN: string;
    //auxiliar
    codigo_fiscal: string;
    function Gravar(p_Codf_Codigo, p_Nato_Codigo: string): Byte;
    function Recuperar(p_Codf_Codigo, p_Nato_Codigo: string): Byte;
    function Excluir(p_Codf_Codigo, p_Nato_Codigo: string): Byte;
    procedure Consultar(var p_q: TQuery; P_codf_codigo, p_Nato_Descricao: string);
    procedure Consultar2(var p_q: TQuery; p_Codf_codigo, p_Nato_Descricao: string);
    function MaiorCodigo: string;
    function MaiorCodigo_Por_codfiscal(P_codf_codigo: string): string;
    function Retorna_Natureza(P_codf_codigo: string): string;
  end;
implementation

{ TNaturezaOper }

procedure TNaturezaOper.Consultar;
begin
  p_q.sql.Clear;
  p_q.Params.Clear;
  p_q.sql.add('Select * from naturezaoperacao where nato_Descricao>=:k_nato_Descricao and codf_codigo=:K_codf_codigo order by nato_descricao');
  p_q.parambyname('k_nato_Descricao').asstring := p_nato_Descricao;
  p_q.parambyname('k_codf_codigo').AsString := trim(P_codf_codigo);
end;

procedure TNaturezaOper.Consultar2;
begin
  p_q.sql.Clear;
  p_q.Params.Clear;
  p_q.sql.add('Select * from naturezaoperacao where Codf_codigo=:a and nato_Descricao>=:b ' +
    'order by nato_descricao');
  p_q.params[0].asstring := trim(p_Codf_codigo);
  p_q.params[1].asstring := p_nato_Descricao;
end;

function TNaturezaOper.Excluir(p_Codf_Codigo, p_Nato_Codigo: string): Byte;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.databasename := dmint.db.databasename;
  tq.active := False;
  tq.close;
  tq.sql.Clear;
  tq.params.clear;
  tq.sql.add('DELETE FROM NaturezaOperacao WHERE CodF_Codigo=:k_CodF_Codigo and nato_codigo=:k_nato_codigo');
  tq.parambyname('k_CodF_Codigo').AsString := trim(p_CodF_Codigo);
  tq.ParamByName('K_nato_codigo').AsString := p_nato_codigo;
  try
    tq.execSQL;
    Result := 1;
  except
    result := 0;
  end;
  tq.close;
  tq.Free;

end;

function TNaturezaOper.Gravar(p_Codf_Codigo, p_Nato_Codigo: string): Byte;
var
  tq: TQuery;
begin
  tq := Tquery.Create(DmInt);
  tq.databasename := dmint.Db.DatabaseName;
  tq.active := False;
  tq.sql.clear;
  tq.params.clear;
  tq.sql.add('SELECT * FROM NaturezaOperacao where Codf_codigo=:k_CodF_Codigo and nato_codigo=:k_nato_codigo');
  tq.parambyname('k_CodF_Codigo').asstring := trim(p_CodF_Codigo);
  tq.parambyname('k_Nato_codigo').asstring := p_nato_codigo;
  tq.open;
  if tq.eof then begin
    tq.sql.clear;
    tq.params.clear;
    tq.sql.add('INSERT INTO NaturezaOperacao VALUES(:k_CodF_Codigo,' +
      ':k_Nato_codigo,' +
      ':K_nato_descricao,' +
      ':k_nato_contadb,' +
      ':K_nato_contacr,' +
      ':k_nato_codigon)');
  end
  else begin
    tq.sql.clear;
    tq.params.clear;
    tq.sql.add('UPDATE NaturezaOperacao SET ' +
      'nato_descricao=:k_nato_descricao,' +
      'nato_contadb=:k_nato_contadb,' +
      'nato_contacr=:K_nato_contacr,' +
      'nato_codigon=:k_nato_codigon ' +
      'WHERE CodF_Codigo=:k_CodF_Codigo and nato_codigo=:K_nato_codigo');
  end;
  tq.parambyname('k_CodF_Codigo').asstring := trim(p_CodF_Codigo);
  tq.parambyname('k_nato_codigo').asstring := p_nato_codigo;
  tq.parambyname('k_nato_descricao').asstring := copy(nato_descricao, 1, 75);
  tq.parambyname('k_nato_contadb').asstring := nato_contadb;
  tq.parambyname('k_nato_contacr').asstring := nato_contacr;
  tq.parambyname('k_nato_codigon').asstring := nato_codigon;
  tq.close;
  try
    tq.execsql;
    result := 1;
  except
    result := 0;
  end;
  tq.Free;
end;

function TNaturezaOper.MaiorCodigo: string;
var
  tq: TQuery;
begin
  tq := TQuery.create(DmInt);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Active := false;
  tq.SQL.clear;
  tq.SQL.Add('select max(nato_codigo) as maior from naturezaoperacao');
  tq.open;
  Result := tq.fieldbyname('maior').AsString;
  if result = '' then
    result := '0';
  tq.close;
  tq.Free;
end;

function TNaturezaOper.MaiorCodigo_Por_codfiscal(
  P_codf_codigo: string): string;
var
  tq: TQuery;
begin
  tq := TQuery.create(DmInt);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Active := false;
  tq.SQL.clear;
  tq.SQL.Add('Select max(nato_codigo) as maior from naturezaoperacao where codf_codigo=:K_codf_codigo');
  tq.ParamByName('K_codf_codigo').AsString := trim(P_codf_codigo);
  tq.open;
  Result := tq.fieldbyname('maior').AsString;
  if result = '' then result := '0';
  tq.close;
  tq.Free;
end;

function TNaturezaOper.Recuperar(p_Codf_Codigo, p_Nato_Codigo: string): Byte;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.databasename := DmInt.Db.DatabaseName;
  tq.active := False;
  tq.sql.clear;
  tq.sql.add('SELECT * FROM naturezaoperacao where CodF_Codigo=:k_CodF_Codigo and nato_codigo=:K_nato_codigo');
  tq.Params[0].asstring := trim(p_CodF_Codigo);
  tq.Params[1].asstring := StrZero(p_nato_codigo, 2);
  tq.open;
  CodF_Codigo := trim(p_CodF_Codigo); //campo criado no formulario de consulta
  nato_codigo := P_nato_codigo; //campo criado no formulario de consulta
  if tq.eof then begin
    Codf_Codigo := '';
    Nato_Codigo := '';
    Nato_Descricao := '';
    Nato_ContaDb := '';
    Nato_ContaCr := '';
    Nato_CodigoN := '';
    Result := 0;
  end
  else begin
    codigo_fiscal := tq.fieldbyname('CodF_Codigo').asstring;
    CodF_Codigo := tq.fieldbyname('CodF_Codigo').asstring;
    nato_codigo := tq.fieldbyname('nato_codigo').AsString;
    nato_descricao := tq.fieldbyname('nato_descricao').AsString;
    nato_contadb := tq.fieldbyname('nato_contadb').AsString;
    nato_contacr := tq.fieldbyname('nato_contacr').AsString;
    nato_codigon := tq.fieldbyname('Nato_codigon').asstring;
    Result := 1;
  end;
  tq.Close;
  tq.Free;
end;

function TNaturezaOper.Retorna_Natureza;
var
  tq: TQuery;
begin
  tq := TQuery.create(DmInt);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Active := false;
  tq.SQL.clear;
  tq.SQL.Add('Select nato_codigo from naturezaoperacao where codf_codigo=:a');
  tq.params[0].AsString := trim(P_codf_codigo);
  tq.open;
  Result := tq.fieldbyname('nato_codigo').AsString;
  tq.close;
  tq.Free;
end;

end.
